Write Skew
複数のトランザクションが 読み取りは被るが、更新する箇所は異なる 場合に起こる整合性破壊。
整合性制約は読み取った結果をもとに保たれているが、非ロック状態だと同時更新で破れる
典型例(当直問題)
AさんとBさんはどちらかが必ず当直する必要がある
制約:「少なくとも1人は当直フラグ ON」
シナリオ
T1(A): 「Bが当直してる」→ 自分を OFF にしよう
T2(B): 「Aが当直してる」→ 自分を OFF にしよう
結果 → A=OFF & B=OFF になり制約違反。
Serializable でなければ発生しうる。
起こりやすいレベル
Snapshot Isolation(PostgreSQL の Repeatable Read 相当)
防止には Serializable